//Groups: @ingroup\s+(API_REF|IMG_BASIC_API|INS_BASIC_API|INS_INST_API|INS_BASIC_API_GEN_IA32|INS_BASIC_API_ARM|INS_BASIC_API_IA32|INS_BASIC_API_IPF|INS_MOD_API_GEN_IA32|SEC_BASIC_API|RTN_BASIC_API|REG_BASIC_API|REG_CPU_GENERIC|REG_CPU_ARM|REG_CPU_IPF|REG_CPU_IA32|TRACE_BASIC_API|BBL_BASIC_API|SYM_BASIC_API|MISC_PRINT|MISC_PARSE|PIN_MEMORY|KNOB_API|KNOB_BASIC|KNOB_PRINT|LOCK|PIN_CONTROL|DEBUG_API|TYPE_BASE|INSTLIB|ALARM|ROGUE|ROGUE_CFG|ROGUE_CFG_BASIC_API|ROGUE_EDG_BASIC_API|ROGUE_BBL_BASIC_API|ROGUE_INS_BASIC_API|ROGUE_TRACE_BASIC_API|ROGUE_CONTROL_BASIC_API|CODECACHE_API|OPTIMIZATION_API|MISC|CHECKPOINTING|INST_ARGS|PIN_THREAD_API|EDG_BASIC|BBL_BASIC|ROGUE_BASIC_API|CODECACHE_NYI_API|INS_BASIC_API_GEN_ARM|INS_BASIC_API_GEN_IPF|MESSAGE_TYPE|MESSAGE_BASIC|MISC_BASIC|ITC_INST_API|CHECKPOINTING_PRIVATE
/* PIN API */

/* THIS FILE IS AUTOMAGICALLY GENERATED - DO NOT CHANGE DIRECTLY*/


typedef enum 
{
    BBL_TYPE_INVALID,       ///< illegal type, to indicate unknown type use BBL_TYPE_UNKNOWN instead
    BBL_TYPE_UBREAK,        ///< break (no go)
    BBL_TYPE_CBREAK,        ///< conditional break
    BBL_TYPE_STOP,          ///< stop (no go)
    BBL_TYPE_UCALL_UNKNOWN, ///< (indirect) call to unknown target 
    BBL_TYPE_UCALL_FUN,     ///< call to known target 
    BBL_TYPE_UCALL_OS,      ///< os call
    BBL_TYPE_CCALL_OS,      ///< conditional os call
    BBL_TYPE_CCALL_UNKNOWN, ///< conditonal (indirect) call to unknown target 
    BBL_TYPE_CCALL_FUN,     ///< conditonal call to known target
    BBL_TYPE_NORMAL,        ///< fallthrough bbl
    BBL_TYPE_CBRANCH,       ///< conditional branch
    BBL_TYPE_UBRANCH,       ///< unconditional branch
    BBL_TYPE_COUNTED,       ///< conditional branch (counted)   
    BBL_TYPE_SWPIPELINED,   ///< conditional branch (counted,register rotation)
    BBL_TYPE_CHECK,         ///< check
    BBL_TYPE_PREFETCH,      ///< prefetch
    BBL_TYPE_UJUMP,         ///< jump 
    BBL_TYPE_UJUMP_DYNLINK, ///< jump into the dynamic linker (in .plt) 
    BBL_TYPE_UJUMP_THUNK,   ///< call of dynamically linked code
    BBL_TYPE_UJUMP_TRAMPOLINE, ///< jump through a trampoline
    BBL_TYPE_UBRANCH_TRAMPOLINE, ///< jump through a trampoline
    BBL_TYPE_CJUMP,         ///< conditional jump
    BBL_TYPE_CJUMP_SWITCH,  ///< conditional jump 
    BBL_TYPE_STUB,          ///< jump bbl that implements a shared lib stub
    BBL_TYPE_URETURN,       ///< return 
    BBL_TYPE_CRETURN,       ///< conditional return 
    BBL_TYPE_DATA,          ///< data  -- NB: data entries must be contiguous. see BBL_IsData
    BBL_TYPE_DATA_IADDR,    ///< data -- pin IADDR for ip relative branch on em64t
    BBL_TYPE_DATA_ARGBLOCK, ///< data -- pin argument block for VM
    BBL_TYPE_DATA_SWITCH1,  ///< data 
    BBL_TYPE_DATA_LAST,     ///< data 
    BBL_TYPE_CONTAINER,     ///< initial container
    BBL_TYPE_UNKNOWN,       ///< unknown type
    BBL_TYPE_VMSVC,         ///< vm service request
    BBL_TYPE_P14_FAULT,     ///< p14 -- faulting/exception ucode
    BBL_TYPE_P14_MSFLOW,    ///< p14 -- general MS flow
    BBL_TYPE_P14_REPFLOW,   ///< p14 -- REP MS flow
    BBL_TYPE_P14_MSCALL,    ///< p14 -- general MS xcall
    BBL_TYPE_LAST
}BBL_TYPE;

                                                                  /* DO NOT EDIT */
typedef enum 
{
    BBL_STATE_INVALID,
    BBL_STATE_LAST
}BBL_STATE;

                                                                  /* DO NOT EDIT */
typedef struct
{
    ADDRINT pos;
}BBL_STRUCT_MAP;

                                                                  /* DO NOT EDIT */
extern BBL BBL_Clone(BBL bbl);

                                                                  /* DO NOT EDIT */
extern VOID BBL_InitOriginal(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_HasRegsym(BBL bbl);

                                                                  /* DO NOT EDIT */
extern UINT32 BBL_NumAttrCrosslink(BBL bbl);

                                                                  /* DO NOT EDIT */
extern UINT32 BBL_NumIns(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_IsImageEntryPoint(BBL bbl);

                                                                  /* DO NOT EDIT */
extern VOID  BBL_SetImageEntryPoint(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsCall(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsUnconditionalCall(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsConditionalCall(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsIndirectCall(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsConditionalControlTransfer(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsDirectControlTransfer(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsIndirectControlTransfer(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_IsReturnSite(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_HasUnmodeledSuccEdges(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsUnresolvedIndirectJump(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_ContainsReturn(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_HasUnmodeledPredEdges(BBL bbl, BOOL switch_ok);

                                                                  /* DO NOT EDIT */
extern BBL BBL_UniquePredecessor(BBL bbl);

                                                                  /* DO NOT EDIT */
extern BOOL BBL_CanBeEntryPoint(BBL bbl, BOOL switch_ok);

                                                                  /* DO NOT EDIT */
extern VOID BBL_TypeSet(BBL bbl, BBL_TYPE type);

                                                                  /* DO NOT EDIT */
extern CHUNK BBL_DataChunk(BBL bbl);

                                                                  /* DO NOT EDIT */

